package net.huashitong.common.util;

import jodd.mail.Email;
import jodd.mail.SendMailSession;
import jodd.mail.SmtpServer;

import jodd.mail.att.FileAttachment;
import jodd.util.MathUtil;
import net.huashitong.common.entity.SysMessage;
import org.springframework.core.io.FileSystemResource;

import javax.mail.Part;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 邮件
 */
public class SendMailUtil {
    /**
        * 初始化邮件发送数据
        * @param host 服务器
        * @param username 发送人
        * @param passwd 发送人密码
        */


    /**
     * 发送普通文本
     *
     * @param sysMessage
     */
    public void simpleMailSend(SysMessage sysMessage) {
        Email mail = Email.create();
        //文本消息
        mail.addText(sysMessage.getEsContent());
        mail.from("yongtaimail@163.com").to(sysMessage.getEsReceiver());
        mail.subject(sysMessage.getEsTitle());
        SmtpServer<?> smtpServer = SmtpServer.create("smtp.163.com").authenticateWith("yongtaimail@163.com", "test1234");
        SendMailSession mailSession = smtpServer.createSession();
        mailSession.open();
        mailSession.sendMail(mail);
        mailSession.close();
        System.out.println("发送成功");
    }

    /**
     * 发送附件,支持多附件
     *
     * @param sysMessage
     * @param paths      附件地址
     * @param urls       key 链接内容  val 链接地址
     */
    public void attachedSend(SysMessage sysMessage, Map<String, String> paths, Map<String, String> urls) {
        Email mail = Email.create();
        //文本消息
        for (Map.Entry<String, String> url : urls.entrySet()) {
            mail.addHtml("<a href='" + url.getValue() + "'>" + url.getKey() + "</a>");
        }
        for (Map.Entry<String, String> path : paths.entrySet()) {
            //加载文件资源，作为附件
            FileSystemResource file = new FileSystemResource(path.getValue());
            FileAttachment fileAttachment = new FileAttachment(file.getFile(), path.getKey(), Part.ATTACHMENT);
            try {
                //添加附件
                mail.attach(fileAttachment);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        mail.addText(sysMessage.getEsContent());
        mail.from("yongtaimail@163.com").to(sysMessage.getEsReceiver());
        mail.subject(sysMessage.getEsTitle());
        SmtpServer<?> smtpServer = SmtpServer.create("smtp.163.com").authenticateWith("yongtaimail@163.com", "test1234");
        SendMailSession mailSession = smtpServer.createSession();
        mailSession.open();
        mailSession.sendMail(mail);
        mailSession.close();
        System.out.println("发送成功");
    }

    /**
       * 发送html文件，支持多图片
       * @param email 对方邮箱
       * @param subject 主题
       * @param text 内容
       * @param paths 富文本中添加用到的路径，一般是图片，或者css,js文件
       * @throws MessagingException
       */
    public void richContentSend (SysMessage sysMessage, Map < String, String > paths){

        System.out.println("发送成功");
    }

    /**
        * 群发多人，且多附件
        * @param mailto 多人邮件地址
        * @param subject 主题
        * @param text 内容
        * @param filePath 文件路径
        * @throws Exception
        */
    public void sendBatchMailWithFile(SysMessage sysMessage, String[] filePath) throws Exception {

        System.out.println("发送成功");
    }

    //此处。。。

//    public static void main (String[]args){
//        SendMailUtil sendMailUtil = new SendMailUtil();
//        SysMessage sysMessage = new SysMessage();
//        sysMessage.setEsTitle("来自督察组的邮件");
//        sysMessage.setEsContent("催办：塘前乡 牵头项目1.0 已经逾期, 请尽快完成！");
//        sysMessage.setEsReceiver("975917586@qq.com");
//        //sendMailUtil.simpleMailSend(sysMessage);
//        Map<String,String> paths = new HashMap<>();
//        paths.put("文件1.sql","F:\\111.sql");
//        Map<String,String> urls = new HashMap<>();
//        urls.put("测试链接1","http://www.baidu.com");
//        urls.put("请前往重大系统","https://www.fzzhengxinyun.com"); //登录重大   如果系统结构完善 传参应该自动登录 TOKEN 为双向加密的有效数据  有效期 https://www.fzzhengxinyun.com?fastLogin?token=EtTGFFghghghvhYG232HJ

//        sendMailUtil.attachedSend(sysMessage,paths,urls);
//    }
}
